home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / cgazv4n3.zip / MENUS.CPP < prev    next >
C/C++ Source or Header  |  1990-02-05  |  1KB  |  51 lines

  1. // MENUS.CPP : demonstration of drop-menus
  2. // by Bruce Eckel. (c) The C Gazette
  3.  
  4. #include "dropmenu.hpp"
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. // Create a bunch of functions using a preprocessor macro:
  9. #define FN(arg) int function_##arg() { puts("function " #arg); return 1; }
  10. FN(1) FN(2) FN(3) FN(4) FN(5) FN(6) FN(7) FN(8) FN(9)
  11. FN(s1) FN(s2) FN(s3)
  12. // An exit function:
  13. int quit() { exit(0); return 0; }
  14.  
  15. dm_item * sub1[] = {
  16.   new dm_item("^one", function_s1),
  17.   new dm_item("^two", function_s2),
  18.   new dm_item("t^hree", function_s3),
  19.   new dm_item("e^xit", quit),
  20.   new dm_item("", function_1)  // empty string indicates end
  21. };
  22.  
  23. drop_menu submenu1(sub1);
  24.  
  25. // note the use of other menus inside menus:
  26. dm_item * sub2[] = {
  27.   new dm_item("^one",   &submenu1),
  28.   new dm_item("^two",   &submenu1),
  29.   new dm_item("t^hree", &submenu1),
  30.   new dm_item("", function_1)
  31. };
  32.  
  33. drop_menu submenu2(sub2);
  34.  
  35. dm_item * dm1[] = {
  36.   new dm_item("^one",  &submenu2),
  37.   new dm_item("^two",  &submenu2),
  38.   new dm_item("t^hree", &submenu2),
  39.   new dm_item("^four",  &submenu2),
  40.   new dm_item("f^ive",  &submenu2),
  41.   new dm_item("^six",  &submenu2),
  42.   new dm_item("^yow",  &submenu2),
  43.   new dm_item("", function_1)
  44. };
  45.  
  46. drop_menu menu1(dm1);
  47.  
  48. main() {
  49.   while(1)
  50.     menu1.activate(5,15);
  51. }